<?php
namespace app\common\logic;

class InfiniteCatLogic
{
    /**
     * @Description 分类数据转换成树形结构
     * @author: zj
     * @param array $data
     * @time 2024/03/25 14:39:12
     * @return array
     */
    public function dataToTree(array $data)
    {
        $idIndexArr = $this->arrKeyUseId($data);

        return $this->idIndexArrToTree($idIndexArr);
    }

    /**
     * @Description 使用主建id作为数据建
     * @author: zj
     * @param array $data
     * @time 2024/03/25 14:39:52
     * @return array
     */
    public function arrKeyUseId(array $data)
    {
        $idIndexArr = [];
        foreach ($data as $v) {
            $idIndexArr[$v['id']] = $v;
        }

        return $idIndexArr;
    }

    /**
     * @Description 住建id为建数据生成结构树
     * @author: zj
     * @param array $idIndexArr
     * @time 2024/03/25 14:40:17
     * @return array
     */
    public function idIndexArrToTree(array $idIndexArr)
    {
        $tree = [];
        foreach ($idIndexArr as $v) {
            if (isset($idIndexArr[$v['pid']])) {
                $idIndexArr[$v['pid']]['son'][] = &$idIndexArr[$v['id']];
            } else {
                $tree[] = &$idIndexArr[$v['id']];
            }
        }

        return $tree;
    }
}